1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.purple.prpl; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import derelict.glib.glist; 34 import derelict.glib.ghash; 35 import derelict.purple.account; 36 import derelict.purple.blist; 37 import derelict.purple.connection; 38 import derelict.purple.conversation; 39 import derelict.purple.notify; 40 import derelict.purple.status; 41 import derelict.purple.imgstore; 42 import derelict.purple.roomlist; 43 import derelict.purple.whiteboard; 44 import derelict.purple.enum_types; 45 import derelict.purple.plugin; 46 import derelict.purple.ft; 47 import core.stdc.time; 48 import core.stdc.config; 49 50 extern (C): 51 52 alias _PurplePluginProtocolInfo PurplePluginProtocolInfo; 53 alias _PurpleAttentionType PurpleAttentionType; 54 alias _Anonymous_0 PurpleIconScaleRules; 55 alias _PurpleBuddyIconSpec PurpleBuddyIconSpec; 56 alias _PurpleThumbnailSpec PurpleThumbnailSpec; 57 alias _Anonymous_1 PurpleProtocolOptions; 58 59 enum _Anonymous_0 60 { 61 PURPLE_ICON_SCALE_DISPLAY = 1, 62 PURPLE_ICON_SCALE_SEND = 2 63 } 64 65 enum _Anonymous_1 66 { 67 OPT_PROTO_UNIQUE_CHATNAME = 4, 68 OPT_PROTO_CHAT_TOPIC = 8, 69 OPT_PROTO_NO_PASSWORD = 16, 70 OPT_PROTO_MAIL_CHECK = 32, 71 OPT_PROTO_IM_IMAGE = 64, 72 OPT_PROTO_PASSWORD_OPTIONAL = 128, 73 OPT_PROTO_USE_POINTSIZE = 256, 74 OPT_PROTO_REGISTER_NOSCREENNAME = 512, 75 OPT_PROTO_SLASH_COMMANDS_NATIVE = 1024, 76 OPT_PROTO_INVITE_MESSAGE = 2048 77 } 78 79 struct _PurpleBuddyIconSpec 80 { 81 char* format; 82 int min_width; 83 int min_height; 84 int max_width; 85 int max_height; 86 size_t max_filesize; 87 PurpleIconScaleRules scale_rules; 88 } 89 90 struct proto_chat_entry 91 { 92 const(char)* label; 93 const(char)* identifier; 94 gboolean required; 95 gboolean is_int; 96 int min; 97 int max; 98 gboolean secret; 99 } 100 101 struct _PurpleAttentionType 102 { 103 const(char)* name; 104 const(char)* incoming_description; 105 const(char)* outgoing_description; 106 const(char)* icon_name; 107 const(char)* unlocalized_name; 108 gpointer _reserved2; 109 gpointer _reserved3; 110 gpointer _reserved4; 111 } 112 113 struct _PurplePluginProtocolInfo 114 { 115 PurpleProtocolOptions options; 116 GList* user_splits; 117 GList* protocol_options; 118 PurpleBuddyIconSpec icon_spec; 119 const(char)* function (PurpleAccount*, PurpleBuddy*) list_icon; 120 const(char)* function (PurpleBuddy*) list_emblem; 121 char* function (PurpleBuddy*) status_text; 122 void function (PurpleBuddy*, PurpleNotifyUserInfo*, gboolean) tooltip_text; 123 GList* function (PurpleAccount*) status_types; 124 GList* function (PurpleBlistNode*) blist_node_menu; 125 GList* function (PurpleConnection*) chat_info; 126 GHashTable* function (PurpleConnection*, const(char)*) chat_info_defaults; 127 void function (PurpleAccount*) login; 128 void function (PurpleConnection*) close; 129 int function (PurpleConnection*, const(char)*, const(char)*, PurpleMessageFlags) send_im; 130 void function (PurpleConnection*, const(char)*) set_info; 131 uint function (PurpleConnection*, const(char)*, PurpleTypingState) send_typing; 132 void function (PurpleConnection*, const(char)*) get_info; 133 void function (PurpleAccount*, PurpleStatus*) set_status; 134 void function (PurpleConnection*, int) set_idle; 135 void function (PurpleConnection*, const(char)*, const(char)*) change_passwd; 136 void function (PurpleConnection*, PurpleBuddy*, PurpleGroup*) add_buddy; 137 void function (PurpleConnection*, GList*, GList*) add_buddies; 138 void function (PurpleConnection*, PurpleBuddy*, PurpleGroup*) remove_buddy; 139 void function (PurpleConnection*, GList*, GList*) remove_buddies; 140 void function (PurpleConnection*, const(char)*) add_permit; 141 void function (PurpleConnection*, const(char)*) add_deny; 142 void function (PurpleConnection*, const(char)*) rem_permit; 143 void function (PurpleConnection*, const(char)*) rem_deny; 144 void function (PurpleConnection*) set_permit_deny; 145 void function (PurpleConnection*, GHashTable*) join_chat; 146 void function (PurpleConnection*, GHashTable*) reject_chat; 147 char* function (GHashTable*) get_chat_name; 148 void function (PurpleConnection*, int, const(char)*, const(char)*) chat_invite; 149 void function (PurpleConnection*, int) chat_leave; 150 void function (PurpleConnection*, int, const(char)*, const(char)*) chat_whisper; 151 int function (PurpleConnection*, int, const(char)*, PurpleMessageFlags) chat_send; 152 void function (PurpleConnection*) keepalive; 153 void function (PurpleAccount*) register_user; 154 void function (PurpleConnection*, int, const(char)*) get_cb_info; 155 void function (PurpleConnection*, int, const(char)*) get_cb_away; 156 void function (PurpleConnection*, const(char)*, const(char)*) alias_buddy; 157 void function (PurpleConnection*, const(char)*, const(char)*, const(char)*) group_buddy; 158 void function (PurpleConnection*, const(char)*, PurpleGroup*, GList*) rename_group; 159 void function (PurpleBuddy*) buddy_free; 160 void function (PurpleConnection*, const(char)*) convo_closed; 161 const(char)* function (const(PurpleAccount)*, const(char)*) normalize; 162 void function (PurpleConnection*, PurpleStoredImage*) set_buddy_icon; 163 void function (PurpleConnection*, PurpleGroup*) remove_group; 164 char* function (PurpleConnection*, int, const(char)*) get_cb_real_name; 165 void function (PurpleConnection*, int, const(char)*) set_chat_topic; 166 PurpleChat* function (PurpleAccount*, const(char)*) find_blist_chat; 167 PurpleRoomlist* function (PurpleConnection*) roomlist_get_list; 168 void function (PurpleRoomlist*) roomlist_cancel; 169 void function (PurpleRoomlist*, PurpleRoomlistRoom*) roomlist_expand_category; 170 gboolean function (PurpleConnection*, const(char)*) can_receive_file; 171 void function (PurpleConnection*, const(char)*, const(char)*) send_file; 172 PurpleXfer* function (PurpleConnection*, const(char)*) new_xfer; 173 gboolean function (const(PurpleBuddy)*) offline_message; 174 PurpleWhiteboardPrplOps* whiteboard_prpl_ops; 175 int function (PurpleConnection*, const(char)*, int) send_raw; 176 char* function (PurpleRoomlistRoom*) roomlist_room_serialize; 177 void function (PurpleAccount*, PurpleAccountUnregistrationCb, void*) unregister_user; 178 gboolean function (PurpleConnection*, const(char)*, guint) send_attention; 179 GList* function (PurpleAccount*) get_attention_types; 180 c_ulong struct_size; 181 GHashTable* function (PurpleAccount*) get_account_text_table; 182 gboolean function (PurpleAccount*, const(char)*, PurpleMediaSessionType) initiate_media; 183 PurpleMediaCaps function (PurpleAccount*, const(char)*) get_media_caps; 184 PurpleMood* function (PurpleAccount*) get_moods; 185 void function (PurpleConnection*, const(char)*, PurpleSetPublicAliasSuccessCallback, PurpleSetPublicAliasFailureCallback) set_public_alias; 186 void function (PurpleConnection*, PurpleGetPublicAliasSuccessCallback, PurpleGetPublicAliasFailureCallback) get_public_alias; 187 void function (PurpleConnection*, PurpleBuddy*, PurpleGroup*, const(char)*) add_buddy_with_invite; 188 void function (PurpleConnection*, GList*, GList*, const(char)*) add_buddies_with_invite; 189 } 190 191 struct _PurpleThumbnailSpec; 192 193 194 195 version(Derelict_Link_Static) 196 { 197 extern( C ) nothrow 198 { 199 PurpleAttentionType* purple_attention_type_new(const(char)* ulname, const(char)* name, const(char)* inc_desc, const(char)* out_desc); 200 void purple_attention_type_set_name(PurpleAttentionType* type, const(char)* name); 201 void purple_attention_type_set_incoming_desc(PurpleAttentionType* type, const(char)* desc); 202 void purple_attention_type_set_outgoing_desc(PurpleAttentionType* type, const(char)* desc); 203 void purple_attention_type_set_icon_name(PurpleAttentionType* type, const(char)* name); 204 void purple_attention_type_set_unlocalized_name(PurpleAttentionType* type, const(char)* ulname); 205 const(char)* purple_attention_type_get_name(const(PurpleAttentionType)* type); 206 const(char)* purple_attention_type_get_incoming_desc(const(PurpleAttentionType)* type); 207 const(char)* purple_attention_type_get_outgoing_desc(const(PurpleAttentionType)* type); 208 const(char)* purple_attention_type_get_icon_name(const(PurpleAttentionType)* type); 209 const(char)* purple_attention_type_get_unlocalized_name(const(PurpleAttentionType)* type); 210 void purple_prpl_got_account_idle(PurpleAccount* account, gboolean idle, time_t idle_time); 211 void purple_prpl_got_account_login_time(PurpleAccount* account, time_t login_time); 212 void purple_prpl_got_account_status(PurpleAccount* account, const(char)* status_id, ...); 213 void purple_prpl_got_account_actions(PurpleAccount* account); 214 void purple_prpl_got_user_idle(PurpleAccount* account, const(char)* name, gboolean idle, time_t idle_time); 215 void purple_prpl_got_user_login_time(PurpleAccount* account, const(char)* name, time_t login_time); 216 void purple_prpl_got_user_status(PurpleAccount* account, const(char)* name, const(char)* status_id, ...); 217 void purple_prpl_got_user_status_deactive(PurpleAccount* account, const(char)* name, const(char)* status_id); 218 void purple_prpl_change_account_status(PurpleAccount* account, PurpleStatus* old_status, PurpleStatus* new_status); 219 GList* purple_prpl_get_statuses(PurpleAccount* account, PurplePresence* presence); 220 void purple_prpl_send_attention(PurpleConnection* gc, const(char)* who, guint type_code); 221 void purple_prpl_got_attention(PurpleConnection* gc, const(char)* who, guint type_code); 222 void purple_prpl_got_attention_in_chat(PurpleConnection* gc, int id, const(char)* who, guint type_code); 223 PurpleMediaCaps purple_prpl_get_media_caps(PurpleAccount* account, const(char)* who); 224 gboolean purple_prpl_initiate_media(PurpleAccount* account, const(char)* who, PurpleMediaSessionType type); 225 void purple_prpl_got_media_caps(PurpleAccount* account, const(char)* who); 226 PurplePlugin* purple_find_prpl(const(char)* id); 227 } 228 } 229 else 230 { 231 extern( C ) nothrow 232 { 233 alias da_purple_attention_type_new = PurpleAttentionType* function(const(char)* ulname, const(char)* name, const(char)* inc_desc, const(char)* out_desc); 234 alias da_purple_attention_type_set_name = void function(PurpleAttentionType* type, const(char)* name); 235 alias da_purple_attention_type_set_incoming_desc = void function(PurpleAttentionType* type, const(char)* desc); 236 alias da_purple_attention_type_set_outgoing_desc = void function(PurpleAttentionType* type, const(char)* desc); 237 alias da_purple_attention_type_set_icon_name = void function(PurpleAttentionType* type, const(char)* name); 238 alias da_purple_attention_type_set_unlocalized_name = void function(PurpleAttentionType* type, const(char)* ulname); 239 alias da_purple_attention_type_get_name = const(char)* function(const(PurpleAttentionType)* type); 240 alias da_purple_attention_type_get_incoming_desc = const(char)* function(const(PurpleAttentionType)* type); 241 alias da_purple_attention_type_get_outgoing_desc = const(char)* function(const(PurpleAttentionType)* type); 242 alias da_purple_attention_type_get_icon_name = const(char)* function(const(PurpleAttentionType)* type); 243 alias da_purple_attention_type_get_unlocalized_name = const(char)* function(const(PurpleAttentionType)* type); 244 alias da_purple_prpl_got_account_idle = void function(PurpleAccount* account, gboolean idle, time_t idle_time); 245 alias da_purple_prpl_got_account_login_time = void function(PurpleAccount* account, time_t login_time); 246 alias da_purple_prpl_got_account_status = void function(PurpleAccount* account, const(char)* status_id, ...); 247 alias da_purple_prpl_got_account_actions = void function(PurpleAccount* account); 248 alias da_purple_prpl_got_user_idle = void function(PurpleAccount* account, const(char)* name, gboolean idle, time_t idle_time); 249 alias da_purple_prpl_got_user_login_time = void function(PurpleAccount* account, const(char)* name, time_t login_time); 250 alias da_purple_prpl_got_user_status = void function(PurpleAccount* account, const(char)* name, const(char)* status_id, ...); 251 alias da_purple_prpl_got_user_status_deactive = void function(PurpleAccount* account, const(char)* name, const(char)* status_id); 252 alias da_purple_prpl_change_account_status = void function(PurpleAccount* account, PurpleStatus* old_status, PurpleStatus* new_status); 253 alias da_purple_prpl_get_statuses = GList* function(PurpleAccount* account, PurplePresence* presence); 254 alias da_purple_prpl_send_attention = void function(PurpleConnection* gc, const(char)* who, guint type_code); 255 alias da_purple_prpl_got_attention = void function(PurpleConnection* gc, const(char)* who, guint type_code); 256 alias da_purple_prpl_got_attention_in_chat = void function(PurpleConnection* gc, int id, const(char)* who, guint type_code); 257 alias da_purple_prpl_get_media_caps = PurpleMediaCaps function(PurpleAccount* account, const(char)* who); 258 alias da_purple_prpl_initiate_media = gboolean function(PurpleAccount* account, const(char)* who, PurpleMediaSessionType type); 259 alias da_purple_prpl_got_media_caps = void function(PurpleAccount* account, const(char)* who); 260 alias da_purple_find_prpl = PurplePlugin* function(const(char)* id); 261 } 262 263 __gshared 264 { 265 da_purple_attention_type_new purple_attention_type_new; 266 da_purple_attention_type_set_name purple_attention_type_set_name; 267 da_purple_attention_type_set_incoming_desc purple_attention_type_set_incoming_desc; 268 da_purple_attention_type_set_outgoing_desc purple_attention_type_set_outgoing_desc; 269 da_purple_attention_type_set_icon_name purple_attention_type_set_icon_name; 270 da_purple_attention_type_set_unlocalized_name purple_attention_type_set_unlocalized_name; 271 da_purple_attention_type_get_name purple_attention_type_get_name; 272 da_purple_attention_type_get_incoming_desc purple_attention_type_get_incoming_desc; 273 da_purple_attention_type_get_outgoing_desc purple_attention_type_get_outgoing_desc; 274 da_purple_attention_type_get_icon_name purple_attention_type_get_icon_name; 275 da_purple_attention_type_get_unlocalized_name purple_attention_type_get_unlocalized_name; 276 da_purple_prpl_got_account_idle purple_prpl_got_account_idle; 277 da_purple_prpl_got_account_login_time purple_prpl_got_account_login_time; 278 da_purple_prpl_got_account_status purple_prpl_got_account_status; 279 da_purple_prpl_got_account_actions purple_prpl_got_account_actions; 280 da_purple_prpl_got_user_idle purple_prpl_got_user_idle; 281 da_purple_prpl_got_user_login_time purple_prpl_got_user_login_time; 282 da_purple_prpl_got_user_status purple_prpl_got_user_status; 283 da_purple_prpl_got_user_status_deactive purple_prpl_got_user_status_deactive; 284 da_purple_prpl_change_account_status purple_prpl_change_account_status; 285 da_purple_prpl_get_statuses purple_prpl_get_statuses; 286 da_purple_prpl_send_attention purple_prpl_send_attention; 287 da_purple_prpl_got_attention purple_prpl_got_attention; 288 da_purple_prpl_got_attention_in_chat purple_prpl_got_attention_in_chat; 289 da_purple_prpl_get_media_caps purple_prpl_get_media_caps; 290 da_purple_prpl_initiate_media purple_prpl_initiate_media; 291 da_purple_prpl_got_media_caps purple_prpl_got_media_caps; 292 da_purple_find_prpl purple_find_prpl; 293 } 294 }